One bandwidth optimization for tile-based rendering graphics processing units (GPUs) is the ability to suppress the eviction of data stored in caches to memory. This optimization is possible when the contents of the cache are not needed for any future operations. The GPU's driver, however, may lack sufficient information needed to make this determination before submitting the command buffer to the GPU.
Previous solutions would require the driver to defer submitting the command buffer until the driver had the appropriate information. Unfortunately, this method could cause the GPU to become idle. Otherwise, the driver would have to submit the command buffer before knowing if discard can be enabled. Application Programming Interfaces (APIs) try to solve this issue by allowing applications to specify this information as early as possible. Not all graphics APIs, however, implement this feature, or require application to use the API, or use the API in such a way that provides the information when the driver needs it.